import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions.col

// 定义一个名为DataQuery的对象
object DataQuery {
  def main(args: Array[String]): Unit = {
    // 创建一个SparkSession对象，设置应用名称为"DataQuery"，并指定在本地[*]上运行
    val spark = SparkSession.builder.appName("DataQuery").master("local[*]").getOrCreate()

    // 读取MySQL数据库中的表"students"数据到DataFrame
    val studentsDF = spark.read
      .format("jdbc")
      .option("url", "jdbc:mysql://localhost:3306/sparksql_practice")  // 数据库连接URL
      .option("dbtable", "students")  // 表名
      .option("user", "root")  // 用户名
      .option("password", "123456")  // 密码
      .option("driver", "com.mysql.jdbc.Driver")  // MySQL驱动程序
      .load()
	    
    // 过滤出年龄大于20岁的学生
    val olderThan20 = studentsDF.filter(col("age") > 20)
    olderThan20.show()  // 展示过滤结果
    
    // 按专业和入学日期排序学生数据
    val sortedStudents = studentsDF.orderBy(col("major").asc, col("enrollment_date").asc)
    sortedStudents.show()  // 展示排序后的数据
    
    // 统计各专业学生人数
    val majorCounts = studentsDF.groupBy("major").count()
    majorCounts.show()  // 展示各专业学生人数统计结果
	    
    spark.stop()  // 停止SparkSession
  }
}
